package com.liao.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.liao.dto.BookDTO;
import com.liao.entity.Book;

/**
 * 图书服务接口
 */
public interface BookService extends IService<Book> {

    /**
     * 分页查询图书列表
     *
     * @param page       分页参数
     * @param name       图书名称（可选）
     * @param author     作者（可选）
     * @param categoryId 分类ID（可选）
     * @return 分页图书列表
     */
    Page<Book> getBookPage(Page<Book> page, String name, String author, Long categoryId);
    
    /**
     * 根据ID获取图书
     *
     * @param id 图书ID
     * @return 图书信息
     */
    Book getBookById(Long id);

    /**
     * 添加图书
     *
     * @param bookDTO 图书信息
     * @return 是否成功
     */
    boolean addBook(BookDTO bookDTO);

    /**
     * 修改图书
     *
     * @param bookDTO 图书信息
     * @return 是否成功
     */
    boolean updateBook(BookDTO bookDTO);

    /**
     * 删除图书
     *
     * @param id 图书ID
     * @return 是否成功
     */
    boolean deleteBook(Long id);

    /**
     * 根据ID获取图书详情
     *
     * @param id 图书ID
     * @return 图书详情
     */
    Book getBookDetail(Long id);

    /**
     * 更新图书库存
     *
     * @param id    图书ID
     * @param stock 库存变化量（正数增加，负数减少）
     * @return 是否成功
     */
    boolean updateStock(Long id, Integer stock);
    
    /**
     * 更新图书库存到指定数量
     *
     * @param id    图书ID
     * @param stock 库存数量
     * @return 是否成功
     */
    boolean updateBookStock(Long id, Integer stock);
}